import subject from "@/api/subject/subject";
export default {
    //数据
    data() {
        return {
            //课程分类集合
            subjectList: [],
            //默认属性 映射关系
            defaultProps: {
                // 将返回来的数据title 与label对应
                label: "title",
            },
            //定义过滤字段
            filterText: "",
            dialogFormVisible: false,
            subjectUI: {}
        };
    },
    // 方法
    methods: {
        //复制并修改官方的节点过滤
        //定义过滤方法
        filterNode(value, data) {
            if (!value) return true;
            //data.title 后端返回的title
            return data.title.indexOf(value) !== -1;
        },
        getAllSubject() {
            subject.getAllSubject().then((response) => {
                //subjectList 后端传输过来的参数
                this.subjectList = response.data.subjectList;
            });
        },
        deleteSubjectById(node, data) {
            //验证两个参数是什么
            // console.log(node);
            // console.log(data);
            this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                //执行删除操作
                subject.deleteSubjectById(data.id).then(response => {
                    //删除成功的操作
                    this.$message({
                        type: 'success',
                        message: '删除成功!'
                    });
                    //从树上直接移除该节点 效率更高 不用刷新页面了 刷新页面又要去数据库中查找数据 效率慢
                    this.$refs.subjectTree.remove(node);
                })

            }).catch(() => {
                //删除失败的操作
                this.$message({
                    type: 'info',
                    message: '已取消删除'
                });
            });

        },

        //打开添加一级分类的弹框
        openParentDialog() {
            //弹框
            this.dialogFormVisible = true;
            //再次添加信息的时侯清空页面的内容
            this.subjectUI.title = "";
            //防止添加二级分类之后parentId值固定
            this.subjectUI.parentId = "";


        },
        //添加一级分类
        saveParentSubject() {
            subject.saveParentSubject(this.subjectUI).then(response => {
                //弹框提示添加成功
                this.$message({
                    message: "添加成功",
                    type: "success"
                });
                //关闭提示框
                this.dialogFormVisible = false;

                //刷新页面
                this.getAllSubject();
            })
        },

        //添加二级分类弹框
        openChildDialog(data){
            this.dialogFormVisible = true;
            //把当前节点的id作为下一个节点的parentId传到后台
            this.subjectUI.parentId=data.id;
            this.subjectUI.title="";
        },


        //执行添加二级分类
        saveChildSubject() {
            subject.saveChildSubject(this.subjectUI).then(response => {
                //弹框提示添加成功
                this.$message({
                    message: "添加成功",
                    type: "success"
                });
                //关闭提示框
                this.dialogFormVisible = false;

                //刷新页面
                this.getAllSubject();
            })
        },
        saveParentOrChildSubiect(){
            //查看this.subjectUI是什么
            //console.log(this.subjectUI);
            console.log(this.subjectUI.parentId);
            //js中所有对象都被当做为true 当且仅当字符串为空时，该字符串被当作false
            //判断是否有父节点 有就执行添加二级节点;没有父节点就执行添加一级节点
            if(this.subjectUI.parentId){
                this.saveChildSubject();
            }else{
                this.saveParentSubject();
            }
        }

    },
    //钩子函数
    created() {
        this.getAllSubject();
    },
    //监视
    watch: {
        //监视filterText 
        filterText(val) {
            //subjectTree 就是页面中的ref
            this.$refs.subjectTree.filter(val);
        }
    },
};